package service

import (
	dom "a-common/domain"
	"a-system/dao"
	"a-system/domain/entity"
	"sync"

	"github.com/gofiber/fiber/v2"
)

var (
	sysDeptServiceTemp *SysDeptService
	sysDeptDao         = dao.NewSysDeptDao()
	sysDeptServiceOnce sync.Once
)

type SysDeptService struct{}

func NewSysDeptService() *SysDeptService {
	sysDeptServiceOnce.Do(func() {
		sysDeptServiceTemp = &SysDeptService{}
	})
	return sysDeptServiceTemp
}

// ExcludeChild 查（排除节点）
func (m *SysDeptService) ExcludeChild() (dom.PageVo, error) {
	return sysDeptDao.List(&entity.SysDeptDto{})
}

// List 分页
func (m *SysDeptService) List(args *entity.SysDeptDto) (dom.PageVo, error) {
	return sysDeptDao.List(args)
}

// Get 查
func (m *SysDeptService) Get(id string) (entity.SysDeptPageVo, error) {
	return sysDeptDao.Get(id)
}

// Add 增
func (m *SysDeptService) Add(args *entity.SysDeptDto) (int64, error) {
	return sysDeptDao.Add(args)
}

// Edit 改
func (m *SysDeptService) Edit(args *entity.SysDeptDto) (int64, error) {
	return sysDeptDao.Edit(args)
}

// Del 删
func (m *SysDeptService) Del(ids string) (int64, error) {
	return sysDeptDao.Del(ids)
}

func (m *SysDeptService) GetTree() error {
	// info, err := sysDeptDao.GetTree()
	// if err != nil {
	// 	return res.ServerFail(c, res.SYS_ERR_BGSQL, err)
	// }
	return nil
}

func (m *SysDeptService) GetTreeSelect() error {
	// ids := c.Query("ids")
	// arr := strings.Split(ids, `,`)

	// // 获取权限所拥有的部门列表id
	// checkedKeys, err := roleDao.GetDeptIdsByRoleIds(arr)
	// if err != nil {
	// 	return res.ServerFail(c, res.SYS_ERR_BGSQL, err)
	// }

	// // 获取菜单列表
	// deptTree, err := sysDeptDao.GetTree()
	// if err != nil {
	// 	return res.ServerFail(c, res.SYS_ERR_BGSQL, err)
	// }

	// return res.OkRes(c, fiber.Map{
	// 	"checkedKeys": checkedKeys,
	// 	"deptTree":    deptTree,
	// })
	return fiber.ErrInternalServerError
}
